package service;

import data.*;

/**
 * 敌方AI服务类
 */
public class EnemyAIService {
    // -------------------- service --------------------
    private GameRuntimeData runtimeData;
    private TankService tankService;

    public EnemyAIService() {
        this.runtimeData = GameRuntimeData.getInstance();
        this.tankService = new TankService();
    }

    /**
     * *难点2
     * 功能: 更新所有敌方坦克AI
     * 参数: void
     * 返回值: void
     */
    public void updateAllEnemyAI() {
        for (EnemyData enemy : runtimeData.getEnemyPool()) {
            if (enemy.getState() == 1) {
                updateEnemyAI(enemy);
            }
        }
    }

    /**
     * 功能: 更新单个敌方坦克AI
     * AI逻辑:
     * 1. 随机决定是否改变方向
     * 2. 向前移动
     * 3. 遇到障碍物时改变方向
     * 4. 随机射击
     * 参数:
     *   enemy: 敌方坦克数据
     * 返回值: void
     */
    private void updateEnemyAI(EnemyData enemy) {
        long currentTime = System.currentTimeMillis();

        // 移动AI
        if (currentTime - enemy.getMoveTimer() > 1000) { // 每1秒更新移动决策
            enemy.setMoveTimer(currentTime);

            // 30%概率改变方向
            if (Math.random() < 0.3) {
                enemy.setDirection((int)(Math.random() * 4));
            }
        }

        // 尝试移动
        tankService.moveTank(enemy, enemy.getDirection());

        // 射击AI
        if (currentTime - enemy.getShootTimer() > 2000) { // 每2秒射击一次
            enemy.setShootTimer(currentTime);

            // 50%概率射击
            if (Math.random() < 0.5) {
                tankService.tankShoot(enemy);
            }
        }
    }
    // -------------------- service --------------------
}